
package com.dhcc.bpm.modules.orga.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dhcc.bpm.modules.common.vo.SelectVo;
import com.dhcc.bpm.modules.orga.entity.Orga;
import com.dhcc.bpm.modules.orga.vo.*;
import org.apache.ibatis.annotations.Param;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;

import java.util.List;

/**
 * @ClassName IOnlineApplyService
 * @Description 机构信息表 服务类
 * @Author daina
 * @Date 2020/2/24 19:25
 * @Version V1.0
 * @Copyright: 2020 东华软件 . All rights reserved.
 */
public interface IOrgaService extends BaseService<Orga> {

    /**
     * @param page
     * @param orga
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.dhcc.bpm.modules.orga.vo.OrgaVO>
     * @Description 自定义分页
     * @Author daina
     * @Date 10:17 2020/2/25
     **/
    IPage<OrgaVO> selectOrgaPage(IPage<OrgaVO> page, OrgaVO orga);


    /**
     * @param page
     * @param orga
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.dhcc.bpm.modules.orga.vo.OrgaVO>
     * @Description 查询机构列表
     * @Author daina
     * @Date 10:17 2020/2/25
     **/
    IPage<OrgaVO> selectControllerOrga(IPage<OrgaVO> page, OrgaVO orga);

    /**
     * @param page
     * @param orga
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.dhcc.bpm.modules.orga.vo.OrgaVO>
     * @Description 查询未分配的api机构列表
     * @Author daina
     * @Date 10:17 2020/2/25
     **/
    IPage<OrgaVO> selectUnControllerOrgaList(IPage<OrgaVO> page, OrgaVO orga);

    /**
     * @param page
     * @param orga
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.dhcc.bpm.modules.orga.vo.OrgaVO>
     * @Description 查询未分配的网关机构列表
     * @Author daina
     * @Date 10:17 2020/2/25
     **/
    IPage<OrgaVO> UnControllerOrgaGateList(IPage<OrgaVO> page, OrgaVO orga);

    /**
     * @param opcProductId
     * @return java.util.List<com.dhcc.bpm.modules.orga.vo.OrgaVO>
     * @Description 根据查询机构列表
     * @Author daina
     * @Date 10:17 2020/2/25
     **/
    List<OrgaVO> selectOrgaByProductId(Long opcProductId);

    /**
     * @param page
     * @param orga
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.dhcc.bpm.modules.orga.vo.OrgaVO>
     * @Description 根据api 下已订阅机构
     * @Author daina
     * @Date 10:17 2020/2/25
     **/
    IPage<OrgaVO> apiList(IPage<OrgaVO> page, OrgaVO orga);

    /**
     * @param page
     * @param orga
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.dhcc.bpm.modules.orga.vo.OrgaVO>
     * @Description 变更机构查询
     * @Author sjm
     * @Date 13:24 2020/2/25 0025
     **/
    IPage<OrgaVO> changeList(IPage<OrgaVO> page, OrgaVO orga);

    /**
     * @param id
     * @return com.dhcc.bpm.modules.orga.entity.Orga
     * @Description 查询机构信息
     * @Author sjm
     * @Date 21:34 2020/2/25 0025
     **/
    OrgaInfoVo selectOrgaInfo(Long id);

    /**
     * @param id
     * @return com.dhcc.bpm.modules.orga.entity.Orga
     * @Description 查询注册联系人
     * @Author sjm
     * @Date 21:46 2020/2/25 0025
     **/
    OrgaManVo selectMan(Long id);

    /**
     * @param id
     * @return com.dhcc.bpm.modules.orga.entity.Orga
     * @Description 查询其他注册联系人
     * @Author sjm
     * @Date 21:52 2020/2/25 0025
     **/
    OrgaOtherManVo selectOtherMan(Long id);

    /**
     * @param id
     * @return com.dhcc.bpm.modules.orga.vo.OrgaInfoNewVo
     * @Description 查询变更后机构信息
     * @Author sjm
     * @Date 9:14 2020/2/27 0027
     **/
    OrgaInfoNewVo selectOrgaInfoNew(Long id);

    /**
     * @param id
     * @return com.dhcc.bpm.modules.orga.vo.OrgaManNewVo
     * @Description 查询变更后注册联系人
     * @Author sjm
     * @Date 9:18 2020/2/27 0027
     **/
    OrgaManNewVo selectManNew(Long id);

    /**
     * @param id
     * @return com.dhcc.bpm.modules.orga.vo.OrgaOtherManNewVo
     * @Description 查询变更后其他注册联系人
     * @Author sjm
     * @Date 9:20 2020/2/27 0027
     **/
    OrgaOtherManNewVo selectOtherManNew(Long id);

    /**
     * @param id
     * @return com.dhcc.bpm.modules.orga.vo.OrgaTestVo
     * @Description 查询环境机构
     * @Author sjm
     * @Date 13:11 2020/3/6 0006
     **/
    OrgaTestVo selectOrgaTest(Long id);

    /**
     * @param
     * @return int
     * @Description 机构名不为空、接入状态的机构条数统计
     * @Author Mdd
     * @Date 2020/3/20 11:43
     **/
    int countOrga();

    /**
     * @param parentId
     * @return int
     * @throws
     * @Description 变更未审批数量
     * @Author xiafayu
     * @Date 2020/4/10 15:29
     **/
    int changeNum(Long parentId);

    /**
     * @param opcUserId
     * @return Orga
     * @Description 根据用户id查询机构信息
     * @Author xiafayu
     * @Date 2020/4/10 15:29
     **/
    Orga findOrgaByUserId(@Param("opcUserId") Long opcUserId);

    /**
     * @param deptId
     * @return Orga
     * @Description 根据部门id查询机构信息
     * @Author xiafayu
     * @Date 2020/4/10 15:29
     **/
    Orga findOrgaByDeptId(@Param("deptId") String deptId);

    /**
     * @param
     * @return java.util.List<com.dhcc.bpm.modules.common.vo.SelectVo>
     * @Description 查询
     * @Author daina
     * @Date 15:49 2020/2/25
     **/
    List<SelectVo> selectByOrgaName();

    boolean deleteIdAndParentId(List<Long> ids);

    List<Orga> findByPId(String pid);

    OrgaVO selectDetail(Orga orga);

    R addOrga(Orga orga);
    R updateOrga(Orga orga);
}
